using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TabGroup : MonoBehaviour
{
    #region UI图片
    public Sprite tabIdle;      // 按钮正常状态图片
    public Sprite tabActive;    // 按钮被选中时的图片
    #endregion

    public List<TabButton> tabButtons;  // 按钮列表
    public TabButton selectedTab;   // 获取被选中的按钮

    public List<GameObject> areas;  // 点击不同的按钮出现不同的页面

    /// <summary>
    /// 按钮需要通过此方法进行订阅，tapGroup才知道自己需要管理谁
    /// </summary>
    public void Subscribe(TabButton tabButton)
    {
        if (tabButton == null)
        {
            tabButtons = new List<TabButton>();
        }
        tabButtons.Add(tabButton);
    }

    /// <summary>
    /// 将所有选项卡按钮重置为空闲状态（即非选中状态）
    /// </summary>
    public void ResetTabs()
    {
        foreach (TabButton button in tabButtons)
        {
            if (selectedTab != null && button == selectedTab)   // 再次点击时不重置当前选中的选项按钮
            {
                continue;
            }
            button.background.sprite = tabIdle;

        }
    }


    /// <summary>
    /// 选项按钮被选中时调用该方法
    /// </summary>
    internal void OnTabSelected(TabButton button)
    {
        if (selectedTab != null)    // 按钮被取消选中时，会发生什么事？
        {
            selectedTab.Deselect();
        }

        selectedTab = button;
        ResetTabs();
        button.background.sprite = tabActive;

        selectedTab.Select();   // 选中时，会发生什么事？

        int index = button.transform.GetSiblingIndex();     // 获取当前按钮在兄弟节点中的index
        for (int i = 0; i < areas.Count; i++)
        {
            if (i == index)
            {
                areas[i].SetActive(true);
            }
            else
            {
                areas[i].SetActive(false);
            }
        }
    }
}
